home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SPACE 2
/
SPACE - Library 2 - Volume 1.iso
/
program
/
561
/
prolog
/
family
< prev
next >
Wrap
Text File
|
1991-09-08
|
3KB
|
121 lines
% Demonstration für TOY Prolog
% Verwandtschaftsbeziehungen
% (c) 1986 JJK
%%% Zuerst ein paar Regeln über die Verwandtschaftsbeziehungen :
mann(X) :- vater(X, _).
frau(X) :- mutter(X, _).
bruder(X, Y) :- mann(X), vater(F, X), vater(F, Y).
bruder(X, Y) :- mann(X), mutter(M, X), mutter(M, Y).
schwester(X, Y) :- frau(X), vater(F, X), vater(F, Y).
schwester(X, Y) :- frau(X), mutter(M, X), mutter(M, Y).
kind(X, Y) :- vater(Y, X) ; mutter(Y, X).
elter(X, Y) :- vater(X, Y) ; mutter(X, Y).
großmutter(X, Y) :- mutter(X, E), elter(E, Y).
großvater(X, Y) :- vater(X, E), elter(E, Y).
onkel(X, Y) :- bruder(X, E), elter(E, Y).
tante(X, Y) :- schwester(X, E), elter(E, Y).
vorfahr(X, Y) :- elter(X, Y).
vorfahr(X, Y) :- kind(Y, E), vorfahr(X, E).
nachkomme(X, Y) :- kind(X, Y).
nachkomme(X, Y) :- elter(E, X), nachkomme(E, Y).
%%% Jetzt ein paar Fakten :
mann(otto). % Otto hat keine Kinder
frau(anna). % Anna auch nicht
vater(egon, vera).
mutter(ute, vera).
vater(willibald, hugo).
mutter(helga, hugo).
vater(hugo, otto). vater(hugo, anna).
mutter(vera, otto). mutter(vera, anna).
% Und ein paar Anfragen dazu :
:- nl, großvater(X, otto), display(X), nl, fail.
:- nl, großmutter(X, anna), display(X), nl, fail.
:- nl, schwester(X, otto), display(X), nl, fail.
:- nl, vorfahr(X, otto), display(X), nl, fail.
%%% Jetzt viele, viele Fakten :
% Quelle : Mt 1, 1-16
vater(abraham, isaak).
vater(isaak, jakob).
vater(jakob, juda). % und dessen Brüder ...
vater(juda, perez).
vater(juda, serach).
mutter(tamar, perez).
mutter(tamar, serach).
vater(perez, hezron).
vater(hezron, ram).
vater(ram, amminadab).
vater(amminadab, nachschon).
vater(nachschon, salmon).
vater(salmon, boas).
mutter(rahab, boas).
vater(boas, obed).
mutter(rut, obed).
vater(obed, isai).
vater(isai, david). % der KÖNIG David !
vater(david, salomo). % , dessen Mutter die Frau des Urija war.
vater(salomo, rehabeam).
vater(rehabeam, abija).
vater(abija, asa).
vater(asa, joschafat).
vater(joschafat, joram).
vater(joram, usija).
vater(usija, jotam).
vater(jotam, ahas).
vater(ahas, hiskija).
vater(hiskija, manasse).
vater(manasse, amon).
vater(amon, joschija).
vater(joschija, jojachin). % und dessen Brüder, zur Zeit der babylonischen
% Gefangenschaft.
vater(jojachin, schealtiel). % nach der babylonischen Gefangenschaft.
vater(schealtiel, serubbabel).
vater(serubbabel, abihud).
vater(abihud, eljakim).
vater(eljakim, azor).
vater(azor, zadok).
vater(zadok, achim).
vater(achim, eliud).
vater(eliud, eleasar).
vater(eleasar, mattan).
vater(mattan, jakob_). % das war ein anderer Jakob als der obige ...
vater(jakob_, josef).
ehemann(josef, maria).
mutter(maria, jesus).
% noch eine Regel für Josef :
vater(X, Y) :- ehemann(X, M), mutter(M, Y).
% Und jetzt eine Anfrage :
:- nl, vorfahr(X, jesus), display(X), nl, fail.
end.